﻿CREATE PROCEDURE dbo.MngDoLogBackup
AS
-- Черноусов ОП 21.06.2006BackUp-ит LOG базы данных
DECLARE @BackupFileName as varchar(250), @strDbName as varchar(100)
--SET NOCOUNT ON
--предпологается что 
--LOG  BACKUP будет производиться ежедневно в 4-е часа начиная с 00:30 часа ночи 
--Раз в неделю в воскресенье перед первым LOG BACKUP-ом создаётся новый файл типа '06-11-05 LOG.trn'

exec dbo.MngDatePartDBBackupFileName @BackupFileName OUTPUT

SET @strDbName = DB_NAME()
SET @BackupFileName = 'C:\DI DB BACKUPS\' + @strDbName + '\'  + @BackupFileName + ' LOG.trn'
--проверить существование временной таблицы
IF EXISTS ( SELECT * FROM tempdb..sysobjects WHERE id = object_id(N'tempdb..#tblTmp') ) 
	TRUNCATE TABLE #tblTmp 
ELSE
	CREATE TABLE #tblTmp (FileExists bit, IsDirectory bit, ParentDirExists bit)

INSERT INTO #tblTmp EXEC master..xp_fileexist @BackupFileName
--если не существует директории с файлами BackUp-ов то выход с ошибкой
IF EXISTS (SELECT * from #tblTmp WHERE ParentDirExists = 0 )
BEGIN
	SET @BackupFileName = 'Отсутствует директория для BackUp-ов! Файл - ' + @BackupFileName 
	RAISERROR ( @BackupFileName , 18, 1) WITH LOG
	RETURN 1
END

IF EXISTS (SELECT * from #tblTmp WHERE FileExists = 0 )
BEGIN --делается FULL BACKUP 
	--print 'FIRST LOG BACKUP'
	BACKUP LOG @strDbName TO DISK = @BackupFileName WITH INIT, NAME = N'Начальный LOG BACKUP', DESCRIPTION = N'BackUp автоматический dbo.MngDoLogBackup'
END ELSE BEGIN --делается DIFFERENTIAL BACKUP
	--print 'NEXT LOG BACKUP'
	BACKUP LOG @strDbName TO DISK = @BackupFileName WITH NOINIT, NOFORMAT, NAME = N'Переодический LOG DIFFERENTIAL BACKUP', DESCRIPTION = N'BackUp автоматический dbo.MngDoLogBackup'
END

DROP TABLE #tblTmp 

RETURN 0
